﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data.SqlClient;
using log4net;

namespace TheBullysStore.Models.ModuloServicios.ContratoPreventivo
{
    public class ContratoPreventivoDAO
    {
        private static ILog log = LogManager.GetLogger(typeof(ContratoPreventivoDAO));
        public ContratoPreventivoBean RegistrarContratoPreventivo(ContratoPreventivoBean contratoPreventivoB)
        {
            ContratoPreventivoBean contratoPreventivo = new ContratoPreventivoBean();
            try
            {
                if (contratoPreventivoB.IdMantenible == 0)
                {
                    if (string.IsNullOrEmpty(contratoPreventivoB.Descripcion))
                    {
                        contratoPreventivoB.Descripcion = "";
                    }

                    Random r = new Random();
                    Double num = r.NextDouble();
                    num = Math.Round(num,5);

                    String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
                    SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
                    sqlCon.Open();
                    string commandString = "INSERT INTO dbo.contrato_preventivo (descripcion,fecha_registro,fecha_inicial,fecha_final,id_proveedor,periodo, estado, id_edificio, random) " +
                                           "VALUES('" + contratoPreventivoB.Descripcion + "', convert(datetime,'" + contratoPreventivoB.FechaRegistro + "',103), convert(datetime,'" + contratoPreventivoB.FechaInicial +
                                                    "',103), convert(datetime,'" + contratoPreventivoB.FechaFinal + "',103), " + contratoPreventivoB.IdProveedor + ",'" + contratoPreventivoB.Periodo + "'," +
                                                    " 1," + contratoPreventivoB.IdEdificio + "," + num + ")";

                    SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                    sqlCmd.ExecuteNonQuery();
                    sqlCon.Close();

                    //obtener el contrato registrado
                    SqlConnection sqlCon1 = new SqlConnection(cadenaConfiguracion);
                    sqlCon1.Open();

                    //string commandString1 = "SELECT IDENT_CURRENT('contrato_preventivo')"; // revisar esta webada
                    string commandString1 = "SELECT max(id_contrato_preventivo) from contrato_preventivo where estado = 1 and id_proveedor = " + contratoPreventivoB.IdProveedor + " and id_edificio = " + contratoPreventivoB.IdEdificio + "and periodo = '" + contratoPreventivoB.Periodo + "' and random = " + num;

                    System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + commandString1);

                    SqlCommand sqlCmd1 = new SqlCommand(commandString1, sqlCon1);
                    //SqlDataReader dataReader = sqlCmd1.ExecuteReader();

                    //while (dataReader.Read())
                    //{
                    //    contratoPreventivo.IdContratoPreventivo = Convert.ToInt32(dataReader[0]);
                    //}

                    //System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + contratoPreventivo.IdContratoPreventivo);
                    //dataReader.Close();
                    //sqlCon1.Close();

                    contratoPreventivo.IdContratoPreventivo = System.Convert.ToInt32(sqlCmd1.ExecuteScalar());
                    sqlCon1.Close();

                    if (contratoPreventivoB.Opcion == 24) contratoPreventivo.Conexion = "Se ingreso correctamente el Contrato Preventivo";
                    else
                    contratoPreventivo.Conexion = "agregado";

                    //para webearlo a la bd
                    //SqlConnection sqlCon2 = new SqlConnection(cadenaConfiguracion);
                    //sqlCon2.Open();

                    //string commandString2 = "SELECT * from contrato_preventivo";

                    //System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + commandString1);

                    //SqlCommand sqlCmd2 = new SqlCommand(commandString2, sqlCon1);
                    //SqlDataReader dataReader2 = sqlCmd1.ExecuteReader();
                    ////System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + contratoPreventivo.id_contrato_preventivo);
                    //dataReader2.Close();
                    //sqlCon2.Close();

                }
                else
                {
                    if (contratoPreventivoB.IdMantenible > 0)
                    {
                        // convert(datetime,'" + mantenimientoPreventivo.FechaInicio + "',103)
                        string commandString = "INSERT INTO contrato_x_mantenible (id_contrato_preventivo, id_mantenible, fecha_inicial, fecha_final, estado) " +
                                               "VALUES(" + contratoPreventivoB.IdContratoPreventivo + ", " + contratoPreventivoB.IdMantenible + ", convert(datetime,'" + contratoPreventivoB.FechaInicial +
                                                        "',103), convert(datetime,'" + contratoPreventivoB.FechaFinal + "',103), 1)";

                        String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
                        SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
                        sqlCon.Open();
                        SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                        sqlCmd.ExecuteNonQuery();
                        sqlCon.Close();


                        System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + commandString);

                        contratoPreventivo.IdContratoPreventivo = contratoPreventivoB.IdContratoPreventivo;
                        contratoPreventivo.Conexion = "contrato_x_mantenible";
                    }
                }
            }

            catch (Exception ex)
            {
                log.Error("RegistrarContratoPreventivo(EXCEPTION): ", ex);
                throw ex;
            }
            return contratoPreventivo;
        }


        public bool ExisteContratoPreventivo(int id_contrato_preventivo)
        {
            try
            {
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();

                string commandString = "SELECT * FROM contrato_preventivo WHERE id_contrato_preventivo = " + id_contrato_preventivo + "'";


                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                if (dataReader.Read())
                {
                    ContratoPreventivoBean contratoPreventivoB = new ContratoPreventivoBean();
                    //cliente.id_tipoDocumento = (string)dataReader["id_tipoDocumento"];
                    //cliente.nro_documento = (string)dataReader["RUC"];

                    contratoPreventivoB.IdContratoPreventivo = (int)dataReader["id_contrato_preventivo"];
                    return true;
                }
                else
                {
                    return false;
                }
            }
            catch (Exception ex)
            {
                log.Error("ExisteContratoPreventivo(EXCEPTION): ", ex);
                throw ex;
                return false;
            }
        }

        public List<ContratoPreventivoBean> ListarContratoPreventivo(int id_contrato_preventivo, string descripcion, DateTime fecha_registro, DateTime fecha_inicial, DateTime fecha_final, int id_proveedor, string periodo)
        {
            SqlConnection sqlCon = null;
            try
            {
                List<ContratoPreventivoBean> listaContratosPreventivos = new List<ContratoPreventivoBean>();

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);
                sqlCon.Open();

                string commandString = "SELECT * FROM contrato_preventivo";
                commandString = commandString + " WHERE id_contrato_preventivo =" + id_contrato_preventivo + " and estado = 1";
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    ContratoPreventivoBean contratoPreventivoB = new ContratoPreventivoBean();
                    //cliente. = (int)dataReader["idUsuario"];
                    contratoPreventivoB.IdContratoPreventivo = (int)dataReader["id_contrato_preventivo"];
                    contratoPreventivoB.Descripcion = (string)dataReader["descripcion"];
                    contratoPreventivoB.FechaRegistro = (string)dataReader["fecha_registro"];
                    contratoPreventivoB.FechaInicial = (string)dataReader["fecha_inicial"];
                    contratoPreventivoB.FechaFinal = (string)dataReader["fecha_inicial"];
                    contratoPreventivoB.IdProveedor = (int)dataReader["id_proveedor"];
                    contratoPreventivoB.Periodo = (string)dataReader["periodo"];

                    listaContratosPreventivos.Add(contratoPreventivoB);
                }
                dataReader.Close();
                sqlCon.Close();

                return listaContratosPreventivos;
            }
            catch (Exception ex)
            {
                log.Error("ListarContratoPreventivo(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }

        public List<ContratoPreventivoBean> ListarContratoPreventivo2(ContratoPreventivoBean contratoPreventivo)
        {
            SqlConnection sqlCon = null;
            try
            {
                //string id_contrato_preventivo = "";
                List<ContratoPreventivoBean> listaContratosPreventivos = new List<ContratoPreventivoBean>();

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);
                sqlCon.Open();

                string commandString = "";

                commandString += "select cp.id_contrato_preventivo, e.Nombre, p.RazonSocial, cp.fecha_registro, cp.fecha_inicial, cp.periodo, m.Nombre, m.id_mantenible, e.id_Edificio " +
                                 "from edificio e, contrato_preventivo cp, proveedor p, mantenible m, contrato_x_mantenible cxm " +
                                 "where cp.estado = 1 and cp.id_proveedor = p.id_proveedor "+
                                        "and cp.id_contrato_preventivo = cxm.id_contrato_preventivo and m.id_mantenible = cxm.id_mantenible "+
                                        "and cp.id_edificio = e.id_Edificio";

                if (!string.IsNullOrEmpty(contratoPreventivo.FechaInicial) || !string.IsNullOrEmpty(contratoPreventivo.FechaFinal)){
                    commandString += " AND cp.fecha_registro BETWEEN convert(datetime,'" + contratoPreventivo.FechaInicial + "',103)"
                                   + " AND convert(datetime,'" + contratoPreventivo.FechaFinal + "',103)";
                }

                if (!string.IsNullOrEmpty(contratoPreventivo.NombreProveedor)) { 
                    commandString += " AND p.RazonSocial like '" + contratoPreventivo.NombreProveedor + "%'";
                }

                if (!string.IsNullOrEmpty(contratoPreventivo.NombreMantenible))
                {
                    commandString += " AND m.Nombre like '" + contratoPreventivo.NombreMantenible + "%'";
                }

                if (!string.IsNullOrEmpty(contratoPreventivo.NombreEdificio))
                {
                    commandString += " AND e.Nombre like '" + contratoPreventivo.NombreEdificio + "%'";
                }

                System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + commandString);

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    ContratoPreventivoBean contratoPreventivoB = new ContratoPreventivoBean();
                    //cliente. = (int)dataReader["idUsuario"];
                    contratoPreventivoB.IdContratoPreventivo = (int)dataReader[0];
                    contratoPreventivoB.NombreEdificio = Convert.ToString(dataReader[1]);
                    contratoPreventivoB.NombreProveedor = (string)dataReader[2];
                    contratoPreventivoB.FechaRegistro = ((DateTime)dataReader[3]).ToString("dd/MM/yyyy");
                    contratoPreventivoB.FechaInicial = ((DateTime)dataReader[4]).ToString("dd/MM/yyyy");
                    contratoPreventivoB.Periodo = (string)dataReader[5];
                    contratoPreventivoB.NombreMantenible = (string)dataReader[6];
                    contratoPreventivoB.IdMantenible = (int)dataReader[7];
                    contratoPreventivoB.IdEdificio = (int)dataReader[8];

                    listaContratosPreventivos.Add(contratoPreventivoB);
                }
                dataReader.Close();
                sqlCon.Close();

                return listaContratosPreventivos;
            }
            catch (Exception ex) {
                log.Error("ListarContratoPreventivo2(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }

        }

        public List<ContratoPreventivoBean> ListarMantenimientos(ContratoPreventivoBean contrato)
        {
            SqlConnection sqlCon = null;
            try
            {
                List<ContratoPreventivoBean> ListarMantenimientos = new List<ContratoPreventivoBean>();

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();


                string commandString = "SELECT m.Nombre, m.id_mantenible FROM mantenible m, proveedor_x_mantenible pxm, proveedor p "+
                                       "where m.Estado = 1 and m.id_mantenible = pxm.id_mantenible and pxm.id_proveedor = p.id_proveedor and p.RazonSocial ='" + contrato.NombreProveedor +"'";
                //string commandString = "SELECT * from mantenible";
                System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + commandString);

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    ContratoPreventivoBean Contrato = new ContratoPreventivoBean();
                    Contrato.NombreMantenible = Convert.ToString(dataReader["Nombre"]);
                    Contrato.IdMantenible = (int)dataReader["id_mantenible"];
                    //System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + Contrato.NombreMantenible);
                    //System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + Contrato.IdMantenible);
                    ListarMantenimientos.Add(Contrato);
                }
                dataReader.Close();
                sqlCon.Close();

                return ListarMantenimientos;
            }
            catch (Exception ex){
                log.Error("ListarMantenimientos(EXCEPTION): ", ex);
                throw ex;
            }
            finally {
                sqlCon.Close();
            }
        }

        public List<ContratoPreventivo.ContratoPreventivoBean> listaTodosMisMantenibles(string nombremantenible)
        {
            SqlConnection sqlCon = null;
            try
            {
                List<ContratoPreventivoBean> ListarMantenimientos = new List<ContratoPreventivoBean>();

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();


                //string commandString = "SELECT m.Nombre, m.id_mantenible FROM mantenible m, contrato_x_mantenible cxm where m.id_mantenible = cxm.id_mantenible and cxm.id_contrato_preventivo = " + contrato.id_contrato_preventivo;
                string commandString = "SELECT Nombre from mantenible where Nombre like '"+nombremantenible+"%' and Estado=1";

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    ContratoPreventivoBean Contrato = new ContratoPreventivoBean();
                    Contrato.NombreMantenible = Convert.ToString(dataReader["Nombre"]);
                    System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + Contrato.NombreMantenible);
                    ListarMantenimientos.Add(Contrato);
                }
                dataReader.Close();
                sqlCon.Close();

                return ListarMantenimientos;
            }
            catch (Exception ex)
            {
                log.Error("listaTodosMisMantenibles(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }

        public List<ContratoPreventivoBean> ListarTodosMantenimientos(ContratoPreventivoBean contrato)
        {
            SqlConnection sqlCon = null;
            try
            {
                List<ContratoPreventivoBean> ListarMantenimientos = new List<ContratoPreventivoBean>();

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();


                //string commandString = "SELECT m.Nombre, m.id_mantenible FROM mantenible m, contrato_x_mantenible cxm where m.id_mantenible = cxm.id_mantenible and cxm.id_contrato_preventivo = " + contrato.id_contrato_preventivo;
                string commandString = "SELECT * from mantenible where Estado = 1";

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    ContratoPreventivoBean Contrato = new ContratoPreventivoBean();
                    Contrato.IdMantenible = (int)dataReader["id_mantenible"];
                    Contrato.NombreMantenible = Convert.ToString(dataReader["Nombre"]);
                    System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + Contrato.NombreMantenible);
                    ListarMantenimientos.Add(Contrato);
                }
                dataReader.Close();
                sqlCon.Close();

                return ListarMantenimientos;
            }
            catch (Exception ex)
            {
                log.Error("ListarTodosMantenimientos(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }

        public List<ContratoPreventivoBean> ListarProveedores(ContratoPreventivoBean contrato)
        {
            SqlConnection sqlCon = null;
            try
            {
                List<ContratoPreventivoBean> ListarMantenimientos = new List<ContratoPreventivoBean>();

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();


                //string commandString = "SELECT m.Nombre, m.id_mantenible FROM mantenible m, contrato_x_mantenible cxm where m.id_mantenible = cxm.id_mantenible and cxm.id_contrato_preventivo = " + contrato.id_contrato_preventivo;
                string commandString = "SELECT * from proveedor where estado = 1";

                if (!string.IsNullOrEmpty(contrato.NombreProveedor))
                {
                    commandString += " AND RazonSocial LIKE '" + contrato.NombreProveedor + "%'";
                }

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    ContratoPreventivoBean Contrato = new ContratoPreventivoBean();
                    Contrato.IdProveedor = (int)dataReader["id_proveedor"];
                    Contrato.NombreProveedor = Convert.ToString(dataReader["RazonSocial"]);
                    System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + Contrato.NombreProveedor);
                    ListarMantenimientos.Add(Contrato);
                }
                dataReader.Close();
                sqlCon.Close();

                return ListarMantenimientos;
            }
            catch (Exception ex)
            {
                log.Error("ListarProveedores(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }

        public List<ContratoPreventivoBean> ListarContratoPreventivoBCP(ContratoPreventivoBean contratoPreventivo)
        {
            SqlConnection sqlCon = null;
            try
            {
                List<ContratoPreventivoBean> listaContratosPreventivos = new List<ContratoPreventivoBean>();

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);
                sqlCon.Open();
                string commandString = "";
                commandString += "select cp.id_contrato_preventivo, e.Nombre, p.RazonSocial, cp.fecha_registro, cp.periodo, e.id_Edificio, p.id_proveedor, cp.fecha_inicial, cp.fecha_final, cp.descripcion " +
                                 "from edificio e, contrato_preventivo cp, proveedor p " +
                                 "where cp.estado = 1 and cp.id_proveedor = p.id_proveedor " +
                                        "and cp.id_edificio = e.id_Edificio";

                if (!string.IsNullOrEmpty(contratoPreventivo.FechaInicial) || !string.IsNullOrEmpty(contratoPreventivo.FechaFinal))
                {
                    commandString += " AND cp.fecha_registro BETWEEN convert(datetime,'" + contratoPreventivo.FechaInicial + "',103)"
                                   + " AND convert(datetime,'" + contratoPreventivo.FechaFinal + "',103)";
                }

                if (!string.IsNullOrEmpty(contratoPreventivo.NombreProveedor))
                {
                    commandString += " AND p.RazonSocial = '" + contratoPreventivo.NombreProveedor + "'";
                }

                if (!string.IsNullOrEmpty(contratoPreventivo.NombreEdificio))
                {
                    commandString += " AND e.Nombre = '" + contratoPreventivo.NombreEdificio + "'";
                }

                System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + commandString);

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    ContratoPreventivoBean contratoPreventivoB = new ContratoPreventivoBean();
                    //cliente. = (int)dataReader["idUsuario"];
                    contratoPreventivoB.IdContratoPreventivo = (int)dataReader[0];
                    contratoPreventivoB.NombreEdificio = Convert.ToString(dataReader[1]);
                    contratoPreventivoB.NombreProveedor = (string)dataReader[2];
                    contratoPreventivoB.FechaRegistro = ((DateTime)dataReader[3]).ToString("dd/MM/yyyy");
                    contratoPreventivoB.Periodo = (string)dataReader[4];
                    contratoPreventivoB.IdEdificio = (int)dataReader[5];
                    contratoPreventivoB.IdProveedor = (int)dataReader[6];
                    contratoPreventivoB.FechaInicial = ((DateTime)dataReader[7]).ToString("dd/MM/yyyy");
                    contratoPreventivoB.FechaFinal = ((DateTime)dataReader[8]).ToString("dd/MM/yyyy");
                    contratoPreventivoB.Descripcion = (string)dataReader[9];

                    listaContratosPreventivos.Add(contratoPreventivoB);
                }
                dataReader.Close();
                sqlCon.Close();

                return listaContratosPreventivos;
            }
            catch (Exception ex)
            {
                log.Error("ListarContratoPreventivoBCP(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }

        public ContratoPreventivoBean modificarContrato(ContratoPreventivoBean contratoPreventivo)
        {
            SqlConnection sqlCon = null;
            ContratoPreventivoBean Contrato = new ContratoPreventivoBean();
            try
            {
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();
                
                string query = "select count(*) from mantenimiento_preventivo where id_contrato_preventivo = " + contratoPreventivo.IdContratoPreventivo + ";";
                SqlCommand sqlCmd1 = new SqlCommand(query,sqlCon);
                double cantidad = System.Convert.ToInt32(sqlCmd1.ExecuteScalar());

                System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + query + "<------>" + cantidad);

                if (cantidad == 0)
                {
                    string commandString = "UPDATE contrato_preventivo set " +
                                           "fecha_registro = convert(datetime, '" + contratoPreventivo.FechaRegistro + "',103) , " +
                                           "fecha_inicial = convert(datetime, '" + contratoPreventivo.FechaInicial + "',103) , " +
                                           "fecha_final = convert(datetime, '" + contratoPreventivo.FechaFinal + "',103) , " +
                                           "descripcion = '" + contratoPreventivo.Descripcion + "', " +
                                           "periodo = '" + contratoPreventivo.Periodo + "' " +
                                           "where id_contrato_preventivo = " + contratoPreventivo.IdContratoPreventivo;

                    System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + commandString);

                    SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                    sqlCmd.ExecuteNonQuery();
                    Contrato.Conexion = "Bien";
                    Contrato.IdContratoPreventivo = contratoPreventivo.IdContratoPreventivo;
                }
                else {
                    if (cantidad > 0)
                    {
                        string queryFecha = "select max(Fecha) from mantenimiento_preventivo where estado = 1 and id_contrato_preventivo =" + contratoPreventivo.IdContratoPreventivo + ";";
                        SqlCommand sqlCmd2 = new SqlCommand(queryFecha, sqlCon);
                        //Contrato.FechaModificacion = System.Convert.ToString(sqlCmd2.ExecuteScalar());
                        DateTime fecha = Convert.ToDateTime(sqlCmd2.ExecuteScalar());
                        Contrato.FechaModificacion = fecha.ToString("dd/MM/yyyy");

                        System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + queryFecha + "<------>" + Contrato.FechaModificacion);
                        //Convert.ToDateTime(contratoPreventivo.FechaFinal);
                        if (Convert.ToDateTime(contratoPreventivo.FechaFinal) >= Convert.ToDateTime(Contrato.FechaModificacion))
                        {
                            string update = "UPDATE contrato_preventivo set " +
                                           "fecha_final = convert(datetime, '" + contratoPreventivo.FechaFinal + "',103), " +
                                           "periodo = '" + contratoPreventivo.Periodo + "', " +
                                           "descripcion = '" + contratoPreventivo.Descripcion + "' " +
                                           "where id_contrato_preventivo = " + contratoPreventivo.IdContratoPreventivo;

                            System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + update);

                            SqlCommand sqlCmd = new SqlCommand(update, sqlCon);

                            sqlCmd.ExecuteNonQuery();
                            Contrato.Conexion = "Bien";
                            Contrato.IdContratoPreventivo = contratoPreventivo.IdContratoPreventivo;
                        }
                        else Contrato.Conexion = "+/-";
                    }
                }


                sqlCon.Close();
                return Contrato;

            }
            catch (Exception ex)
            {
                log.Error("modificarContrato(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }

        public List<ContratoPreventivoBean> ListarDetalleContratoPreventivoBCP(ContratoPreventivoBean contratoPreventivo)
        {
            SqlConnection sqlCon = null;
            try
            {
                List<ContratoPreventivoBean> listaContratosPreventivos = new List<ContratoPreventivoBean>();

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);
                sqlCon.Open();
                string commandString = "";
                commandString += "select cxm.id_contrato_preventivo, cxm.id_mantenible, cxm.fecha_inicial, cxm.fecha_final, m.Nombre "+
                                 "from contrato_x_mantenible cxm, mantenible m "+
                                 "where cxm.estado = 1 and cxm.id_mantenible = m.id_mantenible and cxm.id_contrato_preventivo =" + contratoPreventivo.IdContratoPreventivo;

                System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + commandString);

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    ContratoPreventivoBean contratoPreventivoB = new ContratoPreventivoBean();
                    //cliente. = (int)dataReader["idUsuario"];
                    contratoPreventivoB.IdContratoPreventivo = (int)dataReader[0];
                    contratoPreventivoB.IdMantenible = Convert.ToInt32(dataReader[1]);
                    contratoPreventivoB.FechaInicial = ((DateTime)dataReader[2]).ToString("dd/MM/yyyy");
                    contratoPreventivoB.FechaFinal = ((DateTime)dataReader[3]).ToString("dd/MM/yyyy");
                    contratoPreventivoB.NombreMantenible = Convert.ToString(dataReader[4]);

                    listaContratosPreventivos.Add(contratoPreventivoB);
                }
                dataReader.Close();
                sqlCon.Close();

                return listaContratosPreventivos;
            }
            catch (Exception ex)
            {
                log.Error("ListarDetalleContratoPreventivoBCP(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }

        public string eliminarContratoPreventivo(ContratoPreventivoBean contratoPreventivo)
        {
            SqlConnection sqlCon = null;
            try
            {
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();
                
                string query = "select count(*) from mantenimiento_preventivo where id_contrato_preventivo = " + contratoPreventivo.IdContratoPreventivo + ";";
                SqlCommand sqlCmd1 = new SqlCommand(query,sqlCon);
                double cantidad = System.Convert.ToInt32(sqlCmd1.ExecuteScalar());

                System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + query + "<------>" + cantidad);

                if (cantidad == 0)
                {
                    string commandString = "UPDATE contrato_preventivo SET estado = 0 WHERE id_contrato_preventivo = " + contratoPreventivo.IdContratoPreventivo + ";" +
                                           "UPDATE contrato_x_mantenible SET estado = 0 WHERE id_contrato_preventivo = " + contratoPreventivo.IdContratoPreventivo;

                    SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                    sqlCmd.ExecuteNonQuery();
                    contratoPreventivo.Conexion = "Bien";
                }
                else {
                    contratoPreventivo.Conexion = "No se puede";
                }

                sqlCon.Close();
                return contratoPreventivo.Conexion;
                
            }
            catch (Exception ex)
            {
                log.Error("eliminarContratoPreventivo(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();            
            }
            
        }
    }
}